home *** CD-ROM | disk | FTP | other *** search
- unit uBHOManager;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ExtCtrls, StdCtrls, SHDocVW, MSHTML;
-
- type
- TfrmBHOManager = class(TForm)
- memDebug: TMemo;
- Splitter1: TSplitter;
- btnSetValues: TButton;
- edtFirstName: TEdit;
- Label1: TLabel;
- edtLastName: TEdit;
- edtEMail: TEdit;
- cbCountry: TComboBox;
- Label2: TLabel;
- Label3: TLabel;
- Label5: TLabel;
- GroupBox1: TGroupBox;
- btnClearMemo: TButton;
- btnNavigate: TButton;
- btnBack: TButton;
- btnForward: TButton;
- edtNavigateTo: TEdit;
- btnRefresh: TButton;
- btnClick: TButton;
- procedure btnSetValuesClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure btnClearMemoClick(Sender: TObject);
- procedure btnNavigateClick(Sender: TObject);
- procedure btnBackClick(Sender: TObject);
- procedure btnForwardClick(Sender: TObject);
- procedure btnRefreshClick(Sender: TObject);
- procedure btnClickClick(Sender: TObject);
- private
- CurrentBrowser : IWebBrowser2;
- procedure UpdateHTMLElements( UserForm : IHTMLFormElement );
- public
- procedure SetWebBrowser( CurrentBrowser : IWebBrowser2 );
- procedure AddLogLine( LineToAdd : String );
- end;
-
- var
- frmBHOManager: TfrmBHOManager;
-
- implementation
-
- {$R *.DFM}
-
- procedure TfrmBHOManager.FormCreate(Sender: TObject);
- begin
- CurrentBrowser := nil;
- end;
-
- // Set the IWebBrowser for the top window.
- procedure TfrmBHOManager.SetWebBrowser( CurrentBrowser : IWebBrowser2 );
- begin
- self.CurrentBrowser := CurrentBrowser;
- end;
-
- // Add a line to the debug memo.
- procedure TfrmBHOManager.AddLogLine( LineToAdd : String );
- begin
- memDebug.Lines.Add( LineToAdd );
- end;
-
- // Update the information from the Delphi form into the HTML page in the browser.
- procedure TfrmBHOManager.UpdateHTMLElements( UserForm : IHTMLFormElement );
- var
- ItemIndex, ItemName : OleVariant;
- FirstNameElement, LastNameElement, EMailElement : IHTMLInputElement;
- CountryElement : IHTMLSelectElement;
- begin
- ItemIndex := 0;
-
- // Set the FirstName element in the HTML page.
- ItemName := 'edtFirstName';
- FirstNameElement := UserForm.item( ItemName, ItemIndex ) as IHTMLInputElement;
- FirstNameElement.Set_value( edtFirstName.Text );
-
- // Set the LastName element in the HTML page.
- ItemName := 'edtLastName';
- LastNameElement := UserForm.item( ItemName, ItemIndex ) as IHTMLInputElement;
- LastNameElement.Set_value( edtLastName.Text );
-
- // Set the EMail element in the HTML page.
- ItemName := 'edtEmail';
- EMailElement := UserForm.item( ItemName, ItemIndex ) as IHTMLInputElement;
- EMailElement.Set_value( edtEMail.Text );
-
- // Set the Country element in the HTML page.
- ItemName := 'cbCountry';
- CountryElement := UserForm.item( ItemName, ItemIndex ) as IHTMLSelectElement;
- CountryElement.Set_value( cbCountry.Items[ cbCountry.ItemIndex ] );
-
- end;
-
- // The SetValues button was clicked - set the values specified in the BHOManager
- // into the appropriate fields in the HTML page.
- procedure TfrmBHOManager.btnSetValuesClick(Sender: TObject);
- var
- HtmlDocument : IHTMLDocument2;
- HtmlForms, HtmlFormElements : IHTMLElementCollection;
- UserForm : IHTMLFormElement;
- FormName : WideString;
- Name, Index : OleVariant;
- begin
- // Check whether the CurrentBrowser data member is assigned.
- if ( not Assigned( CurrentBrowser ) ) then
- exit;
- // Get the HTML document held by the CurrentBrowser data member.
- HtmlDocument := CurrentBrowser.Get_Document as IHTMLDocument2;
- // Get a collection of the HTML forms in the current page.
- HtmlForms := HtmlDocument.forms;
- memDebug.Lines.Add( 'Form count is ' + IntToStr( HtmlForms.Get_length ) );
- Index := 0;
- Name := 0;
- // Retrieve the Form indexed zero - which is the only one for now.
- UserForm := HtmlForms.item( Name, Index ) as IHTMLFormElement;
- // Get the name of the form.
- FormName := UserForm.Get_name;
- if ( FormName <> '' ) then
- memDebug.Lines.Add( 'Form name is ' + FormName );
- UpdateHTMLElements( UserForm );
-
- end;
-
- // Clear the debug memo field.
- procedure TfrmBHOManager.btnClearMemoClick(Sender: TObject);
- begin
- memDebug.Clear;
- end;
-
- // Navigate to the requested url.
- procedure TfrmBHOManager.btnNavigateClick(Sender: TObject);
- var
- Flags, TargetFrame, PostData, Headers : OleVariant;
- begin
- if ( not Assigned( CurrentBrowser ) ) then
- exit;
- CurrentBrowser.Navigate( edtNavigateTo.Text, Flags, TargetFrame, PostData, Headers );
-
- end;
-
- // Go back in the browser.
- procedure TfrmBHOManager.btnBackClick(Sender: TObject);
- begin
- if ( not Assigned( CurrentBrowser ) ) then
- exit;
- CurrentBrowser.GoBack;
-
- end;
-
- // Go Forward in the browser.
- procedure TfrmBHOManager.btnForwardClick(Sender: TObject);
- begin
- if ( not Assigned( CurrentBrowser ) ) then
- exit;
- CurrentBrowser.GoForward;
-
- end;
-
- // Refresh the browser.
- procedure TfrmBHOManager.btnRefreshClick(Sender: TObject);
- begin
- if ( not Assigned( CurrentBrowser ) ) then
- exit;
- CurrentBrowser.Refresh;
-
- end;
-
- // Click the Submit button.
- procedure TfrmBHOManager.btnClickClick(Sender: TObject);
- var
- HtmlDocument : IHTMLDocument2;
- AllForms : IHTMLElementCollection;
- WantedForm : IHTMLFormElement;
- CurrentElement : IHTMLElement;
- begin
- // Check whether the CurrentBrowser data member is assigned.
- if ( not Assigned( CurrentBrowser ) ) then
- exit;
- // Get the HTML document held by the CurrentBrowser data member.
- HtmlDocument := CurrentBrowser.Get_Document as IHTMLDocument2;
- AllForms := HtmlDocument.forms;
- WantedForm := Allforms.item( 0, 0 ) as IHTMLFormElement;
- CurrentElement := WantedForm.item( 'SubmitInfo', 0 ) as IHTMLElement;
- CurrentElement.click;
-
- end;
-
- end.
-